package javaTest;

/***
 * 懒汉式：第一次调用才初始化，避免内存浪费，必须加锁 synchronized 才能保证单例，但加锁会影响效率
 * (延迟创建，线程安全)-单|双锁机制
 * 饿汉式：类加载时就初始化，浪费内存
 * （构造方法私有，静态变量，静态方法getInstance）
 */


// /***
//  * 懒:双锁
//  */

// public class Singleton2{
//     private Singleton2(){}
//     private volatile static Singleton2 INSTANCE;
//     public static Singleton2 getINSTANCE() {
//         if(INSTANCE ==null){
//             synchronized(Singleton2.class){
//                 if(INSTANCE==null){
//                     INSTANCE = new Singleton2();
//                 }
//             }
//         }
//         return INSTANCE;
//     }
// }

/***
 * 懒:单锁
 */

public class Singleton2{
    private Singleton2(){}
    private volatile static Singleton2 INSTANCE;
    public static synchronized Singleton2 getINSTANCE() {
        if(INSTANCE==null){
            INSTANCE = new Singleton2();
        }
        return INSTANCE;
    }
    public void show(){
        System.out.println("单列显示");
    }
}
